package com.hjw.service;

import com.hjw.entity.Order;
import io.lettuce.core.dynamic.annotation.Param;

import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 * @创建时间：2025-04-21
 * @文件名称：satoken_sobuk - com.hjw.service
 */
public interface OrderService {
    /**
     * 添加订单
     * @param order Order
     * @return int
     */
    int add(Order order);

    /**
     * 动态条件查询订单
     * @param map map
     * @return Order
     */
    List<Order> findByCondition(Map<String,Object> map);

    /**
     * 根据条件查询订单数量
     * @param map map
     * @return int
     */
    int getCountByCondition(Map<String,Object> map);

    /**
     * 用户id获取订单，根据时间段，付款情况，发货情况查询订单
     * @param map map
     * @return Order
     */
    List<Order> findMyOrder(Map<String,Object> map);

    /**
     * 根据订单id获取订单
     * @param map map
     * @return Order
     */
    Order findByOrdId(Map<String,Object> map);

    /**
     * 根据id获取订单
     * @param id id
     * @return Order
     */
    Order findById(Integer id);

    /**
     * 修改订单情况
     * @param map map
     * @return int
     */
    int update(Map<String,Object> map);

    /**
     * 根据年份和月份查询订单
     * @param month 月份
     * @param year 年份
     * @return double
     */
    Double findByMouth(@Param("year") Integer year, @Param("month") Integer month);

    /**
     * 根据年份和月份查询订单金额
     * @param month 月份
     * @param year 年份
     * @return int
     */
    Double findByMouthMoney( @Param("year") Integer year,@Param("month") Integer month);

    /**
     * 根据付款状态查询订单数量
     * @param payStatus 付款状态
     * @return int
     */
    int getPayStatusCount(int payStatus);

    /**
     * 根据发货状态查询订单数量
     * @param shipStatus 发货状态
     * @return int
     */
    int getShipStatusCount(int shipStatus);
}
